/*
6种原始类型
boolean 
null
undefined 
string
number
symbol
原始类型存储的都是值，没有函数可以调用
比如
*/
// undefined.toString()

'1'.toString()  '1'已经不是原始类型，而是String对象类型

js的number类型是浮点类型的，使用中会遇到bug，string类型是不可变的，无论在string类型上调用那种方法，都不会对值有改变

对于null来说，并不是对象类型，这是一个bug



对象（Object）类型
js中，除了原始类型其他的都是对象类型，原始类型储存值，对象类型存储地址，创建一个对象类型，计算机在内存中帮我们开辟一个空间来存放值，找到这个空间，空间拥有一个地址


typeof 对于原始类型来说，除了null都可以显示正确的类型

typeof 对于对象来说，除了函数都会显示object，所以说typeof并不能准确判断变量到底是什么类型
如果我们想判断一个对象的正确类型，这时候可以考虑使用instanceof,因为内部机制是通过原型链来判断的，在后面的章节中我们也会自己去实现一个instanceof
对于原始数据类型，你想直接通过instanceof来判断类型是不行的，当然我们还是有办法让instanceof判断原始类型

class PrimitiveString{
    static[Symbol.hasInstance](x){
        return typeof x==='string'
    }
}

console.log('hello world' instanceof PrimitiveString) // true

Symbol.hasInstance是一个能让我们自定义instanceof行为的东西，等同于typeof 'hello world'==='string' ,所以结果自然是true了，这也侧面反映了一个问阿替，instanceof也不是百分百可信


js中不存在类，类只是语法糖，本质还是函数
组合继承是最常用的继承方式

function Parent(value){
    this.val=value
}

Person.prototype.getValue=function (){
    console.log(this.val)
}   

function Child(value){
    Parent .call(this,value)
}

Child.prototype=new Parent()

const child=new Child(1)

child.getValue(1)

child.getValue(1)







